Release History

We're thrilled to have advanced to BoltWire version 7.09. The transition to 7.xx was one of the biggest and most important steps in our history. The upgrade path from 6.xx is not smooth, but it's not too difficult. Reach out if you need help. It's worth it...

Below you can find a log of recent changes to our software. Please scan these carefully when upgrading to make sure some change has not been made that will impact your site. Here's a helpful tutorial on doing upgrades. And here is info on managing deprecated features.

Recent Releases January 18, 2021
  • Fixed a bug in the variables script affecting various system paths on some installations.
  • Added an x-frame-options server heading to help block clickjacking attacks. Currently it is set to sameorigin. In site config can also set "xframe" to deny or false (to disable). Thanks to Hassan Abbas for recommending this.
  • Added a conditional option to links to make it easy to enable/disable links based on your specified condition. Use this syntax: [[|Label|if=false]].
  • Fixed a bug in the start.php script that caused problems with creating new installations.
  • Some updates to the math function to work better with php 7 error handling.
  • It's been awhile since I've done an update. There are probably various other small fixes in the code not documented... September 24, 2020
  • Added a new option for easy and accurate indexing of comments. Just set mode=text and comments=true in your indexing rule. And then add comments=true in your highlight template (if you are using that). Very cool. Just implemented this on the BoltWire site.
  • Fixed a few "over tightenings" in the security upgrade in 7.08.
  • Fixed the page so it only works if user logged in.
  • Deleted an extra library.php accidentally copied into the shared folder. Oops!
  • Did some repairs to the scripts function. I found a killer user for it in the accelerator platform--processing actions based on credit card transactions.
  • Redid recent changes in the variables.php script for servers that do not return a request_scheme server value (for some reason).
  • Added some new top level pages for online classes, and used them to replace the resources page. And then changed all the tab blocks to point to it. It's nice because blog/forum/classes gives three approaches as models: guest access, member only access, and different member&guest views. It shows you how to do all three for any future tabs you setup.
  • The highlight function can now properly highlight search results looking for more than one word.
  • Want to keep dynafunc enabled, but keep specific plugins from loading? Set enableMyPlugin: false in site config.
  • Discovered that somehow was not included in the core distribution. So I've readded a revision of that. Unfortunately it opened a small can of worms...
  • First, I noticed info auth was not being processed consistently. That is {} would return based on view permissions while [(info field=var)] would return based on info permissions for the page. Now grants read and write permission to the var, while site.auth.view grants read permission only. And it works the same whether accessed as a var or as a function.
  • This means if you set info permissions to @member, all the data on the page is available to any member (read or write), set it to @owner, and they can only access (read or write) their own data--assuming their id doesn't match the page name (see below). Remove info permissions from the page, but allow view permissions, and they can still read data but not write it. Switch it around, and members can access the data but not view the page itself. That is you either have read/write access to a var, or read access to all the vars.
  • While info auths are page based, I did want to allow owner access to specific pages and data vars. That is, if I set an auth line to @owner, they can access data on pages that match their id (pages like messages.0007) or data fields that match their id (like 0007: some data). So I've once again restored that capability.
  • My original goal in these 7.xx changes to info auths, was to separate info permissions from view and write permissions so you could store more sensitive data on an info page that members can access, without granting them view permissions to the actual page. And allow member info or member pages for data you did not want to store in mbase. That's all possible now, but the changes here could cause some changes to current behavior.
  • Added a "member" conditional that tells whether some string is a current member id or not.
  • Added a huge boost to searching speed by automatically setting a dir and folders variable to searches in just one group. Especially helpful for sites with thousands of pages. Equivalent to setting dir=pages/blog folders=false.
  • Did some styling boosts to the start.php script for a better installation process, as well as some minor tweaks to make the new site orientation process a bit more intuitive.
  • Fixed a bug in the new indexing system to get tagging and link indexing working once again. Specially designed to be simple (automatic) and speedy using a new algorithm. Very cool to see this work right out of the box. Do I need a link find action (like the tag finder)? August 23, 2020
Basically, this version involved a thorough retweak and repolish of the entire site admin area--mostly for the accelerator platform, but many nice tweaks in the core as well. I won't mention everything here but I completed a long list of over 50 tasks, some quite significant. Definitely worth poking around. Esp on a fresh install as some pages were deleted, other replaced. And there's still a few more changes to come. It's starting to actually look like a real control panel. Here are a few details worth mentioning:

  • Added a dynamic {} page variable. Useful for blogs and forums, etc. And a systempages variable you can configure in site.config for search functions.
  • Updated the member links (using @id and [[~id]]) so they only return the first or full name as appropriate--but without creating a link if the viewer is not logged in.
  • Added a new TOC plugin which allows you to create cool expanding menus very easily. Still a bit experimental. I also renamed the old toc function in the core to "indent" and renamed and updated the toc template as well. If you use this anywhere, you may wish to switch to the new template, in your search function. Or simply update code.template.toc to use indent instead of toc.
  • Tightened up security in the mbase function considerably. I also changed the "set" mode so it's only available in forms (ie commands), not the function. And last, I added a hook for your own custom mbase extensions. Oh, and updated the docs.
  • Several more small bugs here and there, mostly revolving around our accelerator plugins. Putting everything to the test here at BoltWire is definitely polishing things up!
  • Added tutorial pages for nearly 9 new plugins, including some new ones. Others have been in the core, but not documents. Nice to have pretty much everything documented now!
  • Decided to change the default superadmin account from admin to 0001. That way all member ids are numeric. Makes a number of things easier--not to mention counting how many members you have! :) And there's a certain logic to it, and well, a bit of a satisfying feel to being numero uno! :) Note this won't affect existing sites in any way.
  • Have implemented a new vertical spacing system that uses hard line breaks (<br>) rather than trying to guess which tags are paragraph (<p>). The display is virtually identical minus the occasional weird behavior in the old system. To force wrap a line in a paragraph tag where desired, just add a dot (.) to the beginning of the line.
  • Finally figured out why includes were affecting vertical spacing incorrectly. Easy fix. Way easier than rewriting the whole vspace process! Though it does work better now...
  • I have added a vspace plugin for anyone who prefers the old vertical spacing approach. It might even work just fine given that I've fixed several bugs--such as the include function above.
  • Fixed some bugs in the new member link shortcut system, mostly to avoid having it interfere with the monospace markup and member groups in your site.auth pages. (This is also one reason I decided to go with 0001 rather than admin for your first account).
  • Updated several actions to make them simpler to use. Namely page editing actions now include a title field by default. And I've set the width to a percentage so they don't cause problems in narrow skins, like mobile.
  • I've added "changes" to the default action bar. Definitely useful for new users figuring out how page names work in BoltWire.
  • Tightened up the site.auth pages to try and make them more what you want for your site. This shouldn't affect you if you already have customized your own authorizations. But otherwise, there could be some changes to behavior.
  • Updated the linkrot function to make it much more accurate. Now if you have a custom missing action for a page it will ignore the bad link. Also if it is in a block or zone other than main (to avoid excess multiple entries). And the linkRotIgnore parameter in site.config works now. Just set it as a csv list of pages and page groups to ignore. So much better, it's actually quite useful now! Oh, and the information is stored in info.linkrot as info vars so you can have a nice display on site.linkrot. With clickable links! So cool!
  • Added a new option for missing mark. Now, instead of just true or false, you can set admin as well... Also note that disabling the missing mark (in site config or with a ? mark) no longer disables linkrot tracking, though that can be disabled still by setting linkrot: false in site.config.
  • I'm not sure when the automatic indexing stopped working, but I noticed it wasn't working on my site, so I dug in, rewrote the basic process, and got it working again--and better than ever. So magical when your changes instantly show up in your indexes as soon as your page changes are saved! Check out the new site.indexing section. The index action has also been revised to index individual pages on command.
  • Also, updated the tree command (now in the section) to include a stash and unstash command. Basically, if you have a lot of blog or forum pages, for example, you can go "stash base=blog" and it will create the pages/blog directory and move all your blog pages into it. Unstash moves everything out and destroys that directory. With BoltWire's automatic page folder system, this works beautifully. Now I just need to get the search function to automatically choose the right directory when doing a search!
  • And a really cool one, I built a file manager for your files folder which allows you to navigate your directories, and view, rename, copy, move, or delete files easily. Also, added nice icons for your most common file types. Check it out!
  • Another cool little tweak to the new skins capability. Now, if you have style.css?ver=1.3 in your html for example, it will automatically update it to 1.4 whenever you update the css template. This is to solve the problem of server side caching which makes it impossible to see the results of your changes otherwise. At least for a few hours!
  • And I've also created a new "dynamic group" capability. Basically, save a search or query that returns a list and store it at and you can do [(list group=name)] and it will pull in the list. I'm using this to generate dynamic member queries to plug into my accelerator messager and mailer programs so I can send messages or emails to dynamically generate groups based on whatever criteria I want. Super cool...
  • And lot's more... August 6, 2020
This was a pretty massive release that could be disruptive. Namely I moved everything into the system folder, and restructured the directories in the site folder just a bit. Please read the changelog carefully if upgrading! This release is also substantially bigger due to a few extra graphics used in the various skins.

  • In this skin, I moved all the bonus plugins, skins, and pages into the system folder to leave the shared folder empty like originally intended--for use by developers to create a custom development engine for multiple sites, such as I'll be doing with the accelerator program.
  • Note the $pluginPath variable was disabled as there are now 2 plugin locations (shared and system folders) and the code was updated to scan both as needed. To create an installation wide config folder, it should be placed in the /shared/plugins folder.
  • Fixed a bug that kept {+skin+} from working in a css field. Very important for adding files. Also fixed issues like the {+title+} skinvar, that returned "css". Incidentally, it provided the capability to overwrite skin vars on local pages, such as creating a page with a specific link color or whatever.
  • Added several new blocks including a block.signup which might be useful in more places.
  • Divided the groups action into a site.groups page and a group action for individual members (tied into site.members). Simpler and more logical. Also updated the code just a bit.
  • Removed a few items from the action bar to shorten its length.
  • Created an advanced new skin using some of the new features in BoltWire called NEO. It is actually 2 skins, one with a side menu and one without. It also has multiple configurable color settings. Check out the demo in our skins area!
  • Added a dropdown skin with a working dropdown menu in the core. Required some slight changes to the dropdown script to get it to load dynamically like this.
  • Added a new skin called designer with a nice bold look. And a really cool responsive design. Can be used for mobile too! I'm actually thinking of using a version of it on my own site... Check it out!
  • And a new skin called heart which was based off of wood, but polished up a bit.
  • Didn't get any votes for which skins were the ugliest, so I went ahead and picked them myself: ancient, brick, and classic are now all gone. Two of them were old, old BoltWire skins. Bitter sweet to let them go! But hey, that's progress...
  • Fixed the source action so skinvars are not actualized, making it possible to edit them. I also went through and fixed all the skins to make sure they had the proper skinvars in the various code pages. If you edit an html or css page without the skin vars being preserved, you should fix those before moving the skins folder and upgrading as that will cause the urls to break. If you don't know what I'm talking about, be sure to ask!
  • In addition to moving the shared folder files to the system folder, I made some tweaks to the directory structures used in BoltWire. Namely, the img folder has been renamed files and the skins folder has been moved up one level. You will also need to make some changes in each site installed on this version (I'm sorry). Basically change the config folder to plugins and move the skins folder up out of the files directory into the field directory. And last, be sure to check your skin to make sure there are no urls that need to be updated. It might be worth creating a separate installation and updating your sites one by one just in case there are problems.
  • Essentially, this makes the system, shared, and site folder all parallel in structure. And that parallelism makes some variables unnecessary in the variables.php script. In particular I've deleted imgURL, imgPath, systemPages, pluginPath, and scriptPath. If you use any of them in a plugin, you will need to update those scripts. IE: systemPages is just systemPath/pages.
  • I've improved the img finder to search the site, shared, and system, files folder (in that order) and if a subdirectory is set, to not look in the parent directory when not found.
  • While I was at it, I modified how the skin resources work (very important). And updated all the default skins. Basically for <<text 'some content'>> you now use <<code 'some content'>>. And for <<text 'some content' markup=true>> you now use <<markup 'some content'>>. In both case, can still use a page name, and if it exists the script will autodetect--but now can use for inserting code/markup directly. Also, as a shortcut, if you are including, you can shorten it (optionally) to <<block top>>. And if you are inserting code.embed.something you can just do <<embed something>>. The text markup was rather abruptly disabled so you might want to review your skins to make sure this doesn't exist anywhere in your site. I don't think it was used in any of the core skins.
  • I also removed all <<cache expires=...>> from the core skins and changed to blocks. This makes it much easier when first editing your skins and getting your site ready for publication. You can always change back to caching for your performance boost when you get them how you want them.
  • I removed the file upload limit for admins, as that can be problematic for new users.
  • I added version numbers to the html files for each of our skins, which just makes it easier to update your css on a server with dynamic caching.
  • I've been doing a bunch of general cleaning up of the skins. Moving some images to the system/files folder so they can be used in different skins. Adding color pickers here and there. Little stuff like that. Still more to do, but it all takes time. If anyone wants to help, let me know. Learning to work with these new skins is pretty fun...
  • Renamed the site.messages page to code.messages, and updated the scripts. It makes more sense to store it there, and it frees up the site.messages namespace for an accelerator messaging system I developed. Double check that none of your plugins use it. And if you have custom messages, be sure to rename the site.messages page in your local site to code.messages.
  • Added a special @memberid shortcut which creates a link to their member profile page with their first name. Whereas [[~memberid]] does the same, but using their full name (title).
  • Can now add directories to the img and file shortcuts, as in img:blog/image.jpg. Quite cool...
  • Added the gui scripts needed to turn that feature on. Didn't realize they were missing!
  • I've been doing a huge amount of work on the core fixing minor bugs and improving usability. I'm sure I haven't covered all the changes, but I need to get this release out before the changes are too overwhelming! July 16, 2020

  • Just added the Site Checklist page to the core installation with our recommended first 10 steps to take in configuring your site.
  • I decided to omit the splash page on the default setup, as it makes a lot of things simpler for a new user. It will still be available in the core, and you can easily turn it back on by simply forwarding to splash.start on the welcome page if you wish.
  • Turns out the language creator wasn't quite working right. I've fixed that and added some enhancements to our language tools. You can delete the langdiff.php file from your shared/plugins directory as it's been replaced with an improved langmaker.php file in this release.
  • Added a new dirlist function which shows a directory tree you can use to view files in your files folder. Eventually this could be developed into a full file management tool, with options to delete, rename, copy, and/or move files. If you have a use for this let me know. I also added a new site.files page to the core installation which makes use of this script. For security purposes, it's currently limited to admins only.
  • Added a new tweak to the mbase system to allow admins to create a new account for someone else, and update the site.members area to give you access to that.
  • I've shrunk the content on the block.tabs page just a bit so you can fit more in the black banner across the top.
  • I've updated the site.checklist page to correspond to make it simpler, and to omit the section about the splash page which was a fair bit challenging for a new user! I plan to write a new plugin page for splash pages (and box pages), as these are essentially plugins just like the rss plugin, which is a skin. July 2, 2020

I spent much of the last two weeks updating my own, pretty massive site from 6.xx to 7.xx and this release is the result of plowing through that process. It took some work, but it results in lot's of important fixes. I'm pretty much done with changes for awhile now other than minor maintenance releases. Still need an update script for 6.xx memberships. Once that is done I'll end the 6.xx series.
  • Made another small change to the start.php script. Now you enable encrypted passwords right from the beginning by simply adding ?cryptkey=sometext to the url, similar to how you can change the default admin id. To do both, add ?admin=someid&cryptkey=sometext. The cryptkey must be at least 8 characters and the admin id can be at most 12 characters.
  • Some slight tweaks to the new membership system, including a mbaseDelete system function, and the ability to do +csv or -csv when doing an mbase set command or function. Also fixed a security issue. And got BoltWire to handle line breaks in mbase fields. I put the new system to the test by upgrading my main site. Fortunately the kinks were few and easy to fix. Things are looking good...
  • Re-added the @owner group for use in the site.auth.mbase page only. Extremely useful.
  • Updated tags action to use the query function properly.
  • Fixed several small bugs skin selector.
  • Ended up resupporting the query parameter in the search function, to have a little more time to flag it as deprecated. Didn't realize how many instance I had of it in my site!
  • Made some tweaks to the highlight function so it can highlight words in info and data variables. Just put <(highlight find=text>
  • Fixed a bug in the text= parameter of the query function to get it to work on php 7.
  • Fixed several strange bugs here and there as I put the new system through it's paces in implementing this version on my main production site. Feeling much more confident with things now. Good bye 6.xx.
  • Turned ssl off by default, as it causes problem on a localhost server. :( Probably a good idea to turn it on in your production site by simply setting ssl: true in site config. Note some servers, switch you to https automatically, in which case it's not really needed...
  • Restored the auth page as I realized there are many cases you want to grant access to reading or writing info (via a function) without giving access view or editing the entire page. I'm not reimplementing the data auth page, as the standard view and write auth pages work fine for data fields.
  • Added a default parameter to the find info processor, the value of which is returned if no return value is found. June 8, 2020
This is another pretty big release with a couple big fixes, some improved code, and some nice new features. I'm pretty well calling a light freeze to new features, so I can focus more on polishing things up. I've also cut down the time it takes on the checklist to put together the skeleton of a basic site to minutes.

  • Changed sticky notes into a separate self-loading plugin and removed it from the css tricks plugin. I think it works better as a standalone function.
  • Somehow the quote plugin explanation page got overwritten at some point. I've rewritten it.
  • Did a complete rewrite of the bullets markup in BoltWire. I discovered a bug when writing the site.checklist page and after a bit of exploration, decided it was worth revamping completely... Should function the same, just better.
  • I've written up a preliminary Site Checklist page--but decided to store it on the BoltWire site, to make it easier to update, and to provide support via the comments. There's a link in the new Site Admin area. Feedback on how to improve it is welcome!
  • I've removed and from the core. I've also changed the core to not use these. Rather, general view and write permissions are used to control when these values can be retrieved or changed. This could tighten up some security settings, and loosen others, so review your own site.auth pages. I've also upped the general view and write auth settings to better match with a membership site, as opposed to a more open general purpose wiki.
  • I've similarly deleted some code from the auth system function that was specific to info and data vars including the page:field auth check and the @owner tag, as neither are needed any longer.
  • I've reworked the skin selector function so you can properly disable a mobile skin or a print skin by setting skinMobileUse: false or skinPrintUse: false. And the skinDefault, skinMobile, and skinPrint settings can define different default skins. The defaults are of course properly overwritten by settings in site.auth.mbase. I also fixed a bug that kept "*" settings from being recognized in site.auth.mbase.
  • Made a slight tweak to the start.php script so you use a custom admin id for your super admin account. Just go to the site creation page, and change the url to include &admin=whatever. The index.php will be created with the $BOLTadmin variable set to "whatever" and the first account created will be "whatever" instead of admin.
  • I also noticed a mistake in the init.txt file that had the $BOLTadmin set to "1000" not "admin". Not sure when that happened, but possibly as early as 7.01. If you've created any test sites using the start.php file, please check your index.php file to make sure it says "admin" not "1000". Or else, your 1000th member will have admin permissions!
  • Added a timestamp conditional to check if a number is a timestamp.
  • Added a very rudimentary forum and blog area, plus a resources page. Updated the tabs to link to these sections. I'll update the Site Checklist page to consider these changes.
  • Added a timezone variable for the site.config page. Set it to one of the values on this page. This is in place of the localtime value. It should look like: "timezone: America/Chicago". Still testing a couple things to make sure this doesn't cause issues. I've disabled the prior system, but could bring it back and allow both if some prefer it...
  • If you use a custom myBOLTauth function, you'll need to change it to return true or false, rather than allow or block. See strange things in the code sometimes! I also eliminated some $BOLTpluginAuth[$type] variable evidently used to append site.auth.pages. The fewer auth options we have, the more secure the system will be.
  • And as a last minute fix, I updated the core script to make sure everything in BoltWire defaults to https rather than http. This didn't seem to affect my server, but it did cause issues on some!
  • And while reviewing things, I deleted the automatic conversion of www links to http://www (because I can't know if the external link should be http or https. This means you now need the full url if you are going to create an external link. June 5, 2020
  • Created a new "Verify Email" plugin which allows you to do double optin processing for new accounts or existing members. I've tried to keep this as simple as possible.
  • Fixed a bug in the new BOLTfolders function, which allowed changes to be saved in the core directory rather than in the local pages folder as intended. This is important to avoid changes you make being overwritten in future releases!
  • Added new membership management tools the Site Admin section including the ability to search for members with specific criteria, to review and update member data, and/or to fully delete accounts. This included several new mbase capabilities in the core.
  • Changed BoltWire's core email script to use html mail by default rather than plain text. To preserve the old behavior, set html=false in your email commands/functions. If you want site.config setting for this, let me know.
  • After some fixes to the source and passform scripts, I think the preview function is no longer necessary. So I've flagged it as deprecated, to make sure there are no necessary use cases, and updated the corresponding actions. June 3, 2020
This is largely a maintenance release fixing a few bugs reported from the prior releases, and adding a couple big plugins. Definitely a good upgrade from version 7.01, but remember the membership system does not work with sites prior to 7.01, and the skins won't work with sites prior to 7.00. Overall, things are looking pretty good, but while things are in flux, I'd be reluctant to use on a production site.

  • Fixed a bug in the skin installation process that deleted skin settings values. This prevented the update settings page from detecting these variable. To test now, go to the ancient skin and click update settings. At some point I need to introduce configurable variables like this to all the skin css sheets. It's pretty easy to do. If you want to help with some, please let me know.
  • Also fixed a bug in the skin css editor function.
  • System skins now explicitly set char encoding to utf-8. Haven't checked all shared skins, though most look good.
  • Updated all the site.skins pages to show the skin name prominently at the top of each page.
  • Changed the splash skin so that the main page div is defined and the background set to white. Made a few tweaks to the gnome skin to improve the display. Remember to delete these skins from your site if you have then installed in order to install these updated skins.
  • Fixed a bug in the way form data is passed to the next page that must have broken at some point along the way. It kind of makes the preview function unnecessary, so I'm temporarily deprecating that unless I see a spot it's necessary. The source function also was redesigned so you can apply things like vspacing to the output of post, get, and cookie values.
  • Added a comment plugin, and documentation. Actually I accidentally added it last time, but hadn't quite perfected it. Working properly now. Also added a site.comments page for moderating site comments.
  • Added a password reminder script and corresponding pages, as a plugin. You do need to have emailing enabled on your site, but that should be doable on most linux servers. Windows machines, not so much. June 2, 2020
Just did another major release, as a second step in our upgrade process to 7.xx. This one deals primarily with implementing the new membership system, though there were quite a few changes. Fortunately, no bug reports from 7.0, so I'm starting to feel more confident with the stability of this release. The main issue will be developing an easy upgrade path from 6.xx. In fact, even compared with 7.0, the membership system in this release is incompatible unless you use the include simplelogin plugin.

  • Pretty massive changes to the whole membership system. While 7.0 was compatible with previous versions of BoltWire, 7.01 is not. Please read this blog post describing the changes. Until I am able to write up a full upgrade tutorial, I strongly recommend using this version with new sites only, and on an experimental basis. It's a major improvement, but it is not an instant upgrade.
  • On the other hand, I did add a simplelogin plugin to the core distribution. Just enable that you should be able to use your existing membership system.
  • I tweaked the BOLTvars function so you can now insert some site.config values into your site as regular system vars. Basically, put mySite: BoltWire and {site} will return that value. For security purposes, this only works with fields that start with "my".
  • Three more deprecated features were removed from the core as I've continued purging our software: the re shortlink, the case conditional, and the getlink function. These have all been updated with better syntax. Please see the deprecated pages for information about upgrading these.
  • Also I've started flagging the time conditional as deprecated. The before and after conditional are much easier and more intuitive to use, making the time conditional unneeded. I'll be removing it soon, but didn't want to scrap it without giving you some time to check for it in your site.
  • I've been working a lot on the user experience at BoltWire in the site creation and account registration process--with lot's of little tweaks all through. The "register" command/action has been renamed as the "join" command/action.
  • I've created two new config variables: mbaseRequired and mbaseNew. The first, (default = true), will forward the user to the page defined in the second, (default = new.member) if the user does not have a name (title) field. This allows for a two step registration process, with the first snagging the email, and the second collecting information. I'm currently using this system to accept new members at the BoltWire site, if you want to see how it works.
  • Added a js=null feature to code.js so you can create links that essentially do nothing. I'm likely to use this in some skins for fake links. And I'm putting them in some of the core blocks as well.
  • I deleted the {member} var from the core, as it is the equivalent of {~title}. Note that these do give a different result when a person is not logged in. The first gave "guest". Now it gives a null value.
  • Once again, when I do massive overhauls of the core code like this it's difficult to log every change, so I'm sure not everything is listed here. So upgrade with care! May 26, 2020
I achieved virtually all my goals in this first release, so I decided to skip the beta releases and go right into an initial trial release of 7.00. Here it is!

Some of the changes below will require some tweaking to update your site. My advice is to play around with it for awhile on a new test site and help make sure everything is working right. In a short time, I'll have a full tutorial on how to upgrade an existing site, and if there are any major bugs we'll hopefully iron them out soon!

  • Made a change to how sites introduce content. Variables like {+site+} and the [[zone]] markup remains unchanged. But <<css>> and ==some markup== are both being replaced with a more flexible block system of the format: <<type "content" parameters>>. Type can be set to text, function, code, markup, or cache, and several parameters are allowed. Please see our new skin guide for more details. This new approach both speeds up performance and gives more flexibility.
  • To upgrade your existing skin change ==some markup== to <<text 'some markup' markup=true>>. For <<css>> put <<code>>. Or, put your css in an external file and simply put <link rel="stylesheet" type="text/css" media="screen" href="{+skin+}/style.css" /> in your skin.
  • I've deleted all previously deprecated code from the core. The only active feature I believe was the "[(search query=" function which now needs to be changed to "[(query page=", but I had quite a few of these in my site. And in 6.04 I flagged template pages and the code.settings page as deprecated. Make sure you run that version a bit before upgrading as in 7.00 those have been eliminated. See our Deprecated Features page for more info on updating your site to eliminate deprecated code.
  • I've moved ipblocking, importing/exporting between BoltWire sites, ajax based updating, the stopwatch, and output buffering all into plugins that will be available in the core and created documentation for each of these as well in the core distribution.
  • I've upped the requirements of BoltWire from PHP 5.3 to PHP 5.4 so I can eliminate the code needed to manage magic quotes which was removed in 5.4.
  • In the process of updating our skin system, I've made quite a few tweaks that could affect you. 1) The $BOLTdefaultSkin, $BOLTdefaultPrintSkin, and $BOLTdefaultMobileSkin are no longer available. 2) If you used site.config to set your skin, I've changed the config value from skin: whatever to defaultSkin: whatever. This is to make it match better with mobileSkin and printSkin. 3) If you use the myBOLTchooseSkin() hook for selecting your own custon skin you now need to rename it myBOLTskinSelector and it should return the skin name, not the skin file name (ie, blue, not And you need to factor in mobile and print options. Review the BOLTskinSelector function in library.php for a better idea what your webhook needs to do. There may be other changes I neglected to jot down, so PLEASE upgrade with caution.
  • To use the new skin selector function in BoltWire, create a page called site.auth.skins and populate it with lines like test.pages*: mydefault | mymobile | myprint. That defines all three skins for any page in that hierarchy. Leave off the asterisk and it only changes one page. Any page or skin not specified will revert to any sitewide defaults set in site.config (defaultSkin, mobileSkin, printSkin) or our system defaults of default, mobile, print.
  • There is a new site.skins section of the site with powerful tools for installing skins, previewing them, editing skins, copying, renaming, deleting skins, and more. Check it out! There is also a new way to set configurable skin vars for your style sheets. This is discussed in greater detail in the skins guide referred to above.
  • Added a built in skin action that allow you to install system or shared skins instantly by simply adding &action=skin&skin=whatever to a url.
  • Last, I've completely restructured how skins are used, and included more than 20 skins in the core distribution that you can install instantly. But you have some work to do to update your existing skins. Basically, you need to create a site folder at localsite/files/skins/skinname and move your files, and any graphics, other css, or js to that one folder. To link to these files, just use {+skin+}/style.css for example. And in fact, you should make a copy of your file named style.css and link to that in your html file--filling in any skinvars with actual values afterwards. The css file now functions as a template, meaning you can put variables in it, and also set values for those variables as data vars on that page. Then, by using the update feature, a brand new style.css file is created with all the variables populated. I have not yet updated all the core skins to fully use this feature, but will in time. If you want to help with this project, and/or submit skins of your own, please reach out.
  • The default installation no longer uses site.folders to define where pages go. Rather, if pages/{p1}/ exists, that becomes the page folder. Otherwise, it uses pages/. The old behavior, is still available via a built in SiteFolders plugin. Or you can use the myBOLTfolders hook to create your own system (note the $htaccess parameter is no longer passed in).
  • The $sitePages var is no longer used, and the site.config page can ONLY be located in either pages or pages/site as this is hard coded in the engine. So if you are using $sitePages to store site.config somewhere else, your site will break. :(
  • I've added some new developer shortcut variables I use all the time right into the core: $p1, $p2, $p12. These are equal to {p1}, {p2} and {p1}.{p2}. This doesn't change markup or anything, just makes plugins easier.
  • The BOLTprocess function has been revamped a bit so that now it can take a parameter. And multiple processes can be run at any point. To use this, the format for setting a process has been slightly revised to this syntax: $BOLTprocess['event'][] = Array('function', 'parameter'); I don't think many people are using this so it will probably go unnoticed, but just in case, it wouldn't hurt to scan your plugins to make sure there's not something that taps into this. If there is, just modify the format as specified.
  • Cleanurls are turned on automatically in the core. If you are not using cleanurls, set that to false in site.config.
  • The code.settings page is now gone from the core. Some vars (like site name, and slogan) are moved into site.config as regular system vars. Some (like actions and search) have been made into blocks. And some (like skin colors) have been moved to the new skin system. You will need to create work arounds for these before upgrading to this release. See my note above about upgrading to 6.04 for a bit to find pages using this.
  • I've similarly moved the default location for templates into the code page hierarchy, so you may need to rename files like to Note however--how you call the template makes a difference. For example, if you use the page will still be called. But if you use the shortcut fmt=forum, and it can't be found locally, the system will now look for and ignore Once again, I've deprecated the old location in version 6.04, so please run that for a while before upgrading to help you prepare for this release.
  • Dug out an old diff function and made it a plugin. Then threw in an alternate undo action (action=diff). You'll have to enable the plugin, make some changes on a page, and then add action=diff to try it out. I plan to add more plugins like this to give people more options right out of the box in BoltWire.
  • Last, this is one of those releases where I removed a few system pages no longer needed. So I recommend scanning your lastmodified dates for this folder and deleting any pages not overwritten.
  • I've moved all our current language files into the core distribution, along with a basic translation template. I've also created a simple site.languages section to manage these.
  • I've restored an old langdiff plugin to inspect your language files for missing entries, and entries missing from your translation template.
  • I decided to go ahead and do a massive update of lot's of favorite plugins. I've got at least 20 useful little goodies added to the core distribution, documented and tested as working. progress bars, rollovers, self-sorting tables, a calculator, youtube player, and many more. I've also created a handy plugins area, as well to help you manage your plugins.
  • I've changed the dynafunc feature to work automatically now, provided the function name (condition, function, command) is the same as the plugin name. That means if you use the rollover function for example, the plugin will be loaded on the fly without you having to do anything. To disable this, set dynafunc: false in site.config.
  • I've added a skinblocks plugin and incorporated it into the zones action so you can see which skinblocks are found on a skin. Experimental.
  • I've built a call to the sortable function right in the core so you only need to set class=sortable in a table to make it work. Super slick.
  • I've installed the TREE function which is a command line like file management tool. It's pretty self explanatory but you do want to always start in demo mode to see what your command will create--as it is incredibly powerful. I'll have to write up a full guide on it.
  • There were actually a surprising number of small bugs I found sprinkled through the code as revamping all the plugins put every aspect of BoltWire through it's various paces. So the core engine should be leaner, lighter, and faster than ever...

Release Archives

Click one of the links below to view archives of BoltWire code and its development:

6.x Release History
5.x to 6.x Transition
5.x Release History
4.x to 5.x Transition
4.x Release History
3.x to 4.x Transition
3.x Release History
2.x to 3.x Transition
2.x Release History
1.x to 2.x Transition
1.x Release History