We come to you today with our last update of 2023. We didn’t want to make too many changes following Kanka 2.0’s massive update, so, you know, we went ahead and prepared a decent-sized update anyway (no CSS changes this time thought!)
Sneak peak at 2024
When navigating to the campaign settings, the sidebar lights up like a christmas tree has a new section. Can you spot the difference?

While not live yet, campaign imports are coming soon! We’re ironing out the last details and will start rolling out this feature to Wyverns and Elementals in early 2024. For this feature to work, we had to rebuild the campaign exports again, which now include a single export with a lot more data. We also had to add a big chunky server to our infrastructure to process the workload. There goes my end of year bonus!
You can learn more about what will be possible with campaign imports in our docs.
If you wish to be one of our beta testers for this feature before everyone else, ping Jay on the Discord! (Only available to Wyverns and Elementals)
Campaign exports v4
As mentioned above, we needed to tweak campaign exports for them to work with the upcoming import feature. What this means is that the export now generates a single zip file with all the json and images. Now available in the export is info about the campaign setup and premium features. The json of each entity is now a lot less busy, with a lot of duplicate data removed. The export time is also sped up. During our testing, 150 entities with a sizeable gallery now takes less than 2 minutes to generate.
We’ve also added a progress tracker to get a better sense as how far along the export is.

Campaign exports now also stay on our servers for up to 2 hours instead of the previous thirty minutes.
Lightning fast
For non-admins in large campaigns that have a lot of permissions set up, Kanka could take a long time for each page load. Some campaigns even hit the 30 second execution time set, meaning the server crashed before the request could finish loading a dinky NPC with no connections.
Replacing of the old system, which was obviously inefficient at scale, is a new way for permissions to be loaded in memory using fancy temporary tables. This means that most pages should now in load under 500 milliseconds. Your players really have no excuse left to not use Kanka!
Untangled branches
Another massive refactoring involves entities that can be nested. Locations with a parent location, quests with a parent quest, you get the gist. Every now and then, the “tree” of an entity and its sub-entities would get out of sync, causing weird numbers and entities to show up for example when listing a location’s characters. This has been a pain in my life for 6 years now.
Turns out, databases now support a term called common table expressions, which might be slower (we haven’t yet tested it with 6 million entities and thousands of concurrent users), but it means that it’s re-calculated all the time, meaning it can (in theory at least) no longer go out of sync.
Most of you have probably never encountered this bug, but know that I can now sleep better at night knowing that I don’t potentially have to rebuild the trees every morning.
New gallery permissions
When editing a role’s permissions, the gallery role is now split up into three.
- full control: does that the previously named “gallery” permission did.
- browse: allows users to view the gallery and browse it for adding images in the text editor.
- upload: allows users to upload images to the gallery by copy-pasting images in the text editor. A user who can upload but not browse will only see images they’ve uploaded in the text editor gallery browsing.

General improvements
When setting up a moon in a calendar, the moon phase now accepts 9 decimal points. This way, the earth’s moon phase of 29.530588861 can be set. 🤓
Still on the topic of calendars, a new checkbox “show birthdays” was added to a calendar’s config. This will show each year birthday reminders for entities that have their birthday set up. This reminder stops if the character dies, sorry.
Map markers get a new checkbox “disable popup” to disable the annoying popup when hovering a marker on the map’s explore page.
When bulk editing entities, it is now possible to set the gallery image and gallery header (for premium campaigns) in one big swoop.
When adding entities to a tag or attaching entities to an ability, it is now possible to select multiple entities at a time rather than having to do the process a gazillion times.
When creating a new connection, the target field now also accepts multiple entities to speed up the process. For all your edgy characters, all their dead relatives can now be added in one go!
Objects get a new filter “is equipped” to find objects that are or aren’t in the inventories of entities.
All entity types that can have connections now get a new “connection target” and “connection relation” filter to find entities with a specific connections. If both fields are provided, it narrows down the search results.

The colour picker field has been updated to a new library. The old one was no longer updated since 2018 and no longer worked on newer versions of Safari. This one does more or less the same, but looks slightly better. The new library does lose the option to remember your last choice sadly.
When setting the focus point of an image (on an entity or on the gallery), the image to set the focus point no longer renders the image in its full size, making it a lot easier to set the focus point on smaller devices.
When defining a role’s permissions, the entity list is now ordered alphabetically.
Lastly, a new advanced mention parameter tooltip:attributes allows the tooltip of a mention to render the target entity’s attributes instead of the text. This feature is currently only available for premium campaigns. Learn more in the docs.
API changes
When calling the locations endpoint, or any other entity endpoint that supports nesting, the ?related parameter will now include ancestors (up to the root) and children ids.
Additionally, a new general filters endpoint can list available filters for entities by their type.
Server tweaks
All servers now run Kanka on PHP 8.3. In the upcoming weeks, we’ll be migrating the database and cache servers to some new more powerful servers to better handle spikes in traffic.
That’s it for the overview of this 2.1 release. Hopefully you and your players can enjoy a way faster Kanka during the holidays, and we’ll see you again in early 2024 for more big surprises!
As always, thanks to our amazing subscribers for making this huge updates possible! Come join us on our Discord to get early sneak peaks of future updates.

