The categories are a special kind of tags, that have a description assigned. The users/admins define this type of tags, by simply using the syntax tag:description when specifying new tags in the threads.
Every tag with description becomes "a category".
Also, the tags have a hidden parameter named "importance" that must be >= 0 for the categories. The tags with importance < 0 will not be displayed as a category.
The order in which the categories are sorted on the category list is according to the Importance value. More "important" categories are listed first.
Every new tag has importance = 0;
The administrator can change the importance and the descriptions of the tags from the SQLite console:
update tags set Importance = IMPORTANCE where tag='MYTAG';
update tags set Description = 'NEW-DESCRIPTION-FOR-THE-TAG-MYTAG' where tag='MYTAG';
So, in order to create a new category, simply create a thread with this new tag and define the tag with description. In order to have tags with description, but not show them in the categories, set the "importance" field to less than 0.
In order to simply remove the description from the tag use:
update tags set Description = NULL where tag='MYTAG';
All these complications are with purpose. The idea is to avoid the over-administration of the forum and to give the users ability to influence the structure of the forum and the priority of the themes.
It is planned to implement later some way for the users to change the "Importance" values of the categories by voting up/down or according to the category use...